Spring 2012: Room 1042 Duncan Hall
Monday, Wednesday, Friday, 10am
This page contains both the PDF format copies of the lecture notes, and
a lecture-by-lecture bibliography for the class.
Some of the reading materials are available on the
Rice Only readings page; others will require
you to visit the ACM Digital Library
or the university's library.
Finally, you can find most of the papers on
Google Scholar.
Look up the paper by author or title, then check to see if it has a copy of the
actual document.
General Background - see a good undergraduate textbook
Read the Wikipedia entry on Compiler Optimization
The results on inline substitution in the lecture are taken from
"An experiment with inline substitution", K.D. Cooper, M.W. Hall,
and L. Torczon, Software--Practice and Experience 21(6),
June 1991.
"Improved Optimization of Fortran Object Programs,"
R.G. Scarborough and H.G. Kolsky,
IBM Journal of Research and Development, pages 660-676,
November, 1980. (on the readings page)
J. Cocke and P. Markstein, "Measurement of Program Improvement
Algorithms," Proceedings of the 1980 IFIP Congress,
North Holland Publishers, 1980.
(Also, IBM RC 8111, 1980)
M. Auslander and M. Hopkins, "An Overview of the PL.8 Compiler,",
Proceedings of the 1982 ACM SIGPLAN Symposium on Compiler
Construction, Boston, MA, USA, June 1982. (Also, SIGPLAN
Notices 17(6))
D.J. Scales, K.H. Randall, S. Ghemawat, and J. Dean,
"The Swift Java Compiler: Design and Implementation",
Compaq Western Research Laboratory (WRL) Research Report 2000/2,
April 2000.
full paper
Chapter 8, Engineering a Compiler 2e
This reference covers the next several lectures.
Local Optimization, and
2-up version
If you printed off Lecture 5 last class, these slides
were in that file. They have now been separated, but don't both to
reprint them.
For DVNT, see the paper "Value Numbering" referenced in lecture 7
For the Dominator Calculation, see K.D. Cooper, T.J. Harvey, and K.W.
Kennedy, "A Simple, Fast Dominance Algorithm", Rice CS TR 06-38870,
January 2006.
The algorithm is also described in Sections 9.2 and 9.5.2 of EaC2e
K.D. Cooper, M.W. Hall, and L. Torczon,
"An Experiment with Inline Substitution",
Software--Practice and
Experience 21(6), June 1991, pages 581-601.
J.W. Davidson and A. Holler, "A Study of a C Function Inliner,"
Software--Practice and Experience 19(1), January
1988, pages 79-97.
J.W. Davidson and A. Holler,
"Subprogram Inlining: A Study of Its Effects on Program Execution
Time", IEEE Transactions on
Software Engineering, 18(2) 1992, pages 89-102.
K. Cooper, M. Hall, L. Torczon, "Unexpected Side Effects of Inline
Substitution: A Case Study," ACM Letters on Programming
Languages and Systems (LOPLAS) 1(1).
K. Cooper, T. Harvey, and T. Waterman, "An Adaptive Strategy
for Inline Substitution", Proceedings of CC 2008
K. Pettis and R.C. Hansen, "Profile Guided Code Positioning,"
Proceedings of the ACM SIGPLAN '90 Conference on Programming
Language Design and Implementation (PLDI),
White Plains, NY, July 1990,
pages 16-27. (Also SIGPLAN Notices 25(6).)
(DOI)
N. Gloy and M.D. Smith, "Procedure Placement using Temporal-Ordering
Information,", ACM TOPLAS 21(5), 1999, pages 977-1027.
(DOI)
J.B. Kam and J.D. Ullman, "Global Data-flow Analysis and
Iterative Algorithms", JACM 23(1), January 1976, pages 158-171.
J.B. Kam and J.D. Ullman, "Monotone Data-flow Analysis Frameworks",
Acta Informatica, 7(3), pages 305-317, 1977.
G. Kildall, "A Unified Approach to Global Optimization",
Proceedings of the 1st POPL, 1973, in ACM Digital Library
Ken Kennedy, "A Survey of Data Flow Analysis Techniques", in
Program Flow Analysis: Theory and Applications
(N.D. Jones and S.S Muchnick, editors), Prentice-Hall, 1981.
The iterative DOM computation is described in Chapter 9
of EaC (corrected in EaC2e).
and in a Rice CS TR by Cooper, Harvey, and Kennedy.
K.D. Cooper and K. Kennedy, "Interprocedural Side-Effect Analysis in
Linear Time,", Proceedings of the SIGPLAN 88 Conference on Programming
Language Design and Implementation (PLDI 88), ACM SIGPLAN Notices 23(7),
July 1988, pages 57--66.
J.H. Reif and H.R. Lewis, "Symbolic Evaluation and the Global Value
Graph," Conference Record of the 4th ACM Symposium on Principles
of Programming Languages (POPL), January 1977, pages 104-118.
M. Wegman and F.K. Zadeck, "Constant Propagation with Conditional
Branches", ACM Transactions on Programming Languages and Systems
(TOPLAS) 13(2), pages 181-210.
(DOI)
"Efficiently Computing Static Single Assignment Form and the
Control Dependence Graph", R. Cytron, J. Ferrante, B.K. Rosen, M.N.
Wegman, and F.K. Zadeck, ACM TOPLAS 13(4), October 1991, pages
451--490.
(DOI)
R.M. Shapiro and H. Saint, "The Representation of Algorithms
as Cyclic Partial Orderings,"
Technical Report CA-7002-1432, Massachusetts Computer Associates,
February 1970.
very hard to find; I do not
have a copy of it
Translating Out of SSA Form + DEAD, and
2-up version
This lecture also includes DEAD, an algorithm that eliminates useless
computations, based on the algorithm in the original SSA paper.
Section 9.3.5 in EaC2e (Translation Out of SSA Form)
"Practical Improvements to the Construction and Destruction of
Static Single Assignment Form", P. Briggs, K.D. Cooper, T.J. Harvey,
and L.T. Simpson, Software--Practice and Experience 28(8)
July 1998, pages 859--891. (on readings page)
(DOI)
Benoit Boissinot, Alain Darte, Benoit Dupont de Dinechin, Christophe
Guillon, and Fabrice Rastello, "Revisiting Out-of-SSA Translation for
Correctness, Code Quality, and Efficiency", CGO 2009, March 2009.
(DOI)
"Fast Copy Coalescing and Live-Range Identification", PLDI 2002,
May 2002, pages 25-32.
(DOI)
"Efficiently Computing Static Single Assignment Form and the
Control Dependence Graph", R. Cytron, J. Ferrante, B.K. Rosen, M.N.
Wegman, and F.K. Zadeck, ACM TOPLAS 13(4), October 1991, pages
451--490. (original version of Dead)
(DOI)
Section 10.2.1 in EaC2e (Eliminating Useless Computations)
M. Wegman and F.K. Zadeck, "Constant Propagation with Conditional
Branches", ACM Transactions on Programming Languages and Systems
(TOPLAS) 13(2), pages 181-210.
(DOI)
C. Click and K.D. Cooper, "Combining Analyses, Combining Optimizataions,"
ACM Transactions on Programming Languages and Systems (TOPLAS),
17(2), pages 181-196.
(DOI)
Also, Section 10.7.1 in EaC2e ("Combining Optimizations")
J. Knoop, O. Ruthing, and B. Steffen,
"Lazy Code Motion",
Proceedings of ACM SIGPLAN '92 Conference on Programming Language
Design and Implementation (PLDI), June 199,
(DOI)
K-H. Drechsler and M.P. Stadel,
"A variation of Knoop, Ruthing, and Steffen's Lazy Code Motion",
ACM SIGPLAN Notices, 28(5), May 1993
(DOI)
B. Alpern, M.N. Wegman, and F.K. Zadeck, "Detecting Equality of
Variables in Programs," Proceedings of the 15th ACM SIGPLAN-SIGACT
Symposium on Principles of Programming Languages (POPL 88), pages 1-11.
(DOI)
See also L.T. Simpson's Ph.D. thesis, "Value-Driven Redundancy
Elimination,", Rice University, Department of Computer Science,
April 1996. (available from Rice's Fondren Library; search term
"Rice Theses")
K. Cooper, J. Eckhardt, and K. Kennedy, "Redundancy Elimination
Revisited," Proceedings of the 17th Internation Conference on Parallel
Architectures and Compilation Tools (PACT 08), 2008, pages 12-21
(DOI)
K.D. Cooper, L.T. Simpson, and C.A. Vick, "Operator Strength Reduction",
ACM TOPLAS, 23(5), September 2001, pages 603-625.
DOI)
See also the chapter, "Reduction of Operator Strength" by F.E. Allen,
J. Cocke, and K. Kennedy in Program Flow Analysis, N.D. Jones and
S.S. Muchnick, editors. Here are my old lecture notes on that algorithm
J. Knoop, O. Ruthing, and B. Steffen, "Lazy Strength Reduction,"
Journal of Programming Languages, 1(1), 1993, pages 71-91.
(CiteSeer)
J. Issac and D.M. Dhamdhere, "A Composite Algorithm for Strength
Reduction and Code Movement", International Journal of Computer
and Information Sciences, 9(3), 1980, pages 243-273.
(DOI)
S. Richardson and M. Ganapathi, "Interprocedural optimization:
Experimental Results," Software--Practice and Experience,
19, 1989.
(DOI)
K.D. Cooper, M.W. Hall, and L. Torczon,
"An experiment with inline substitution",
Software--Practice and Experience 21(6), June 1991.
(DOI)
E. Myers, "A Precise Inter-procedural data flow algorithm",
Proceedings of the 8th ACM SIGPLAN-SIGACT Symposium on Principles
of Programming Languages (POPL '81), Jan 1981, pages 219--230.
(DOI)
B.G. Ryder, "Constructing the Call Graph of a Program",
IEEE Transctions on Software Engineering 5(3), May 1979,
pages=216-226.
(DOI)
M.G. Burke, "An Interval-based Approach to Exhaustive and Incermental
Interprocedural Data-flow Analysis", ACM Transactions on
Progamming Languages and Systems (TOPLAS) 12(3), July 1990,
pages 341--395.
(DOI)
D. Callahan, A. Carle, M.W. Hall, and K. Kennedy,
"Constructing the Procedure Call Multigraph", IEEE Transactions
on Software Engineering, 16(4), April 1990, pages=483--487.
(DOI)
M.W. Hall and K Kennedy, "Efficient Call Graph Analysis,",
ACM Letters on Programming Languages and Systems (LOPLAS)
1(3), Sept 1992.
(DOI)
J.P. Banning, "An Efficient Way to Find the Side Effects of
Procedure Calls and the Aliases of Variables," Proceedings of
the 6th ACM SIGACT-SIGPLAN Symposium on Principles of Programming
Languages (POPL '79),
(DOI)
K.D. Cooper and K. Kennedy, "Interprocedural Side-effect Analysis
in Linear Time,", Proceedings of the ACM SIGPLAN 1988
Conference on Programming Language Design and Implementation,
(PLDI), July 1988 (Also SIGPLAN Notices 23(7)).
(DOI)
K.D. Cooper and K. Kennedy, "Fast Interprocedural Alias Analysis,"
Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on
Principles of Programming Languages (POPL), January 1989.
(DOI)
D. Callahan, K.D. Cooper, K. Kennedy, and L. Torczon, "Interprocedural
Constant Propagation," Proceedings of ACM SIGPLAN 86 Conference
on Compiler Construction, July 1986 (Also SIGPLAN Notices 21(7)).
(DOI)
D. Grove and L. Torczon, "Interprocedural Constant Propagation:
A Study of Jump Function Implementation", Proceedings of the ACM
SIGPLAN 93 Conference on Programming Language Design and
Implementation (PLDI), July 1993, pages 90-99.
(DOI)
R. Metzger and S. Stroud, "Interprocedural Constant Propagation:
An Empirical Study", ACM Letters on Programming Languages and
Systems (LOPLAS) 2, pages 213-232.
(DOI)
L. Andersen, "Program Analysis and Specialization for the
C Programming Language," Ph.D. Thesis, DIKU, University of
Copenhagen, May 1994. (Google will find it)
G.J. Chaitin, M.A. Auslander, A.K. Chandra, J. Cocke, M.E. Hopkins,
and P.W. Markstein, "Register Allocation Via Coloring,", Computer
Languages, 6(1), January 1981, pages 47--57.
G.J. Chaitin, "Register Allocation and Spilling Via Graph Coloring,"
Proceedings of the ACM SIGPLAN Symposium on Compiler Construction,
SIGNPLAN NOTICES 17(6), June 1982, pages 98--105.
G.J. Chaitin, "Register Allocation and Spilling Via Graph Coloring,"
United States Patent 4,571,678, February 1986.
S.S. Lavrov, "Store Economy in Closed Operator Scheme", Journal
of Computational Mathematics and Mathematical Physics I, 4, 1961,
pages 687-701. (Published in English translation in USSR
Computational Mathematics and Mathematical Physics 1(3), 1962.
pages 810--828.)
A.P. Ershov, "Reduction of the Problem of Memory Allocation in
Programming to the Problem of Coloring the Vertices of Graphs",
Doklady Akademii Naux SSSR 142(4), pages 785-787.
(Published in English translation in Soviet Mathematics 3(1),
January 1962, pages 163-165.)
K.D. Cooper, T.J. Harvey, and L. Torczin, "How to Build an Interference
Graph", Software--Practice and Experience. 28(4), April 1998.
This site is maintained by Keith D. Cooper.
He is a terrible e-mail correspondent.